/*
单一职责原则：就一个类而言，应该仅有一个引起它变化的原因[ASD]。

“我们在做编程的时候，很自然地就会给一个类加各种各样的功能，比如我们写一个窗体应用程序，
一般都会生成一个Form1这样的类，于是我们就把各种各样的代码，像某种商业运算的算法呀，
像数据库访问的SQL语句呀什么的都写到这样的类当中，这就意味着，无论任何需求要来，
你都需要更改这个窗体类，这其实是很糟糕的，维护麻烦，复用不可能，也缺乏灵活性。”
如果一个类承担的职责过多，就等于把这些职责耦合在一起，一个职责的变化可能会削弱
或者抑制这个类完成其他职责的能力。这种耦合会导致脆弱的设计，
当变化发生时，设计会遭受到意想不到的破坏[ASD]。

“那你就应该明白了，所谓游戏逻辑，不过就是数组的每一项值变化的问题，下落、旋转、碰撞判断、移动、堆积
这些都是在做数组具体项的值的变化。而界面表示逻辑，不过是根据数组的数据进行绘出和擦除，或者根据键盘
命令调用数组的相应方法进行改变。因此，至少应该考虑将此程序分为两个类，
一个是游戏逻辑的类，一个是WinForm窗体的类。当有一天要改变界面，或者换界面时，不过是窗体类的变化，
和游戏逻辑无关，以此达到复用的目的。”
 -程杰. 大话设计模式

 MVC的本质思想，逻辑抽象和具体实现分开
*/

package main
